// \u4e00-\u9fa5] 中文验证规则

Page({
  onLoad({ point, building, room, id }) {
    // point, building, room     添加房屋
    // id                        编辑操作
    if (id) {
      // 做点编辑的事:
      // 1. 修改页面标题  API
      wx.setNavigationBarTitle({
        title: '编辑房屋信息',
      })
      // 2. 发请求回显
      this.getDetail(id)
    } else {
      this.setData({ point, building, room })
    }
  },

  async getDetail(id) {
    const { code, data: info } = await wx.http({
      url: '/room/' + id,
    })
    if (code !== 10000) return wx.toast()

    this.setData({ ...info })
  },

  data: {
    point: '', // 小区
    building: '', // 楼栋
    room: '', // 房间
    mobile: '', // 手机号
    name: '', // 姓名
    gender: 1, // 性别
    idcardFrontUrl: '', // 正面照
    idcardBackUrl: '', // 背面照
  },

  // 验证手机号
  verifyMobile() {
    const reg = /^1[3-9]\d{9}$/
    const flag = reg.test(this.data.mobile.trim())

    if (!flag) wx.toast('手机号有问题')

    return flag
  },

  // 验证业主姓名
  verifyName() {
    // 验证业主姓名（必须为汉字）
    const reg = /^[\u4e00-\u9fa5]{2,5}$/
    // 验证业主姓名
    const valid = reg.test(this.data.name.trim())
    // 验证结果提示
    if (!valid) wx.toast('请填写真实中文姓名!')
    // 返回验证结果
    return valid
  },

  verifyImg() {
    const flag = Boolean(this.data.idcardFrontUrl) && !!this.data.idcardBackUrl

    if (!flag) wx.toast('照片需要上传')

    return flag
  },

  goList() {
    // navigateTo switchTab ...
    wx.reLaunch({
      url: '/house_pkg/pages/list/index',
    })
  },

  removePicture(ev) {
    // 这个函数将来是移除图片 但是既能移除正面照 也能移除背面照
    // this.setData({ idcardFrontUrl: '' })
    console.log(ev.mark.type)

    if (ev.mark.type === 'idcardFrontUrl') {
      this.setData({ idcardFrontUrl: '' })
    } else {
      this.setData({ idcardBackUrl: '' })
    }

    // 对象的语法: 属性名表达式    中括号语法   obj.name  obj['name']

    // 移除图片的类型（身份证正面或反面）
    // const type = ev.mark.type
    // this.setData({ [type]: '' })
  },

  async upload(e) {
    // 用户先选择照片
    const res = await wx.chooseMedia({
      count: 1, // 一张
      mediaType: ['image'], // 照片
    })
    // console.log(res.tempFiles[0].tempFilePath) // 用户选择的照片 也就是将来需要上传的图片地址

    // console.log('上传照片', e.mark.type)
    const type = e.mark.type // 'idcardFrontUrl' 'idcardBackUrl'

    // 再上传照片
    wx.uploadFile({
      url: 'https://live-api.itheima.net/upload',
      filePath: res.tempFiles[0].tempFilePath,
      name: 'file',
      header: {
        Authorization: 'Bearer ' + getApp().token,
      },
      // formData: {}
      success: ({ data }) => {
        // console.log(data)
        const {
          code,
          data: { url },
        } = JSON.parse(data)
        // console.log(temp)

        if (code !== 10000) return wx.toast('上传失败')
        wx.toast('上传成功')

        if (type === 'idcardFrontUrl') {
          this.setData({ idcardFrontUrl: url })
        } else {
          this.setData({ idcardBackUrl: url })
        }

        // this.setData({
        //   [type]: url,
        // })
      },
    })
  },

  // 添加的操作  /  编辑的操作
  async submit() {
    // 1. 校验
    if (!this.verifyName()) return // 姓名
    if (!this.verifyMobile()) return // 手机号
    if (!this.verifyImg()) return // 两张照片

    // 2. 请求
    // 理论上做id 的判断
    // 有 id 请求编辑的接口;
    // 无 id 请求添加的接口;

    // 实际上 我们这个项目接口一直比较牛
    // 这个接口既支持添加 又支持编辑

    // console.log('请求吧...')
    // const { name, mobile, gender, point, building, room, idcardFrontUrl, idcardBackUrl } = this.data
    delete this.data.__webviewId__
    delete this.data.status // 由于这个接口不支持传递 status

    const { code } = await wx.http({
      url: '/room',
      data: this.data,
      method: 'post',
    })

    if (code !== 10000) return wx.toast()

    // 3. 回列表页面
    // wx.reLaunch({
    //   url: '/house_pkg/pages/list/index',
    // })

    // 列表 => 选择小区 => 选择楼栋 => 选择房间 => 表单页面
    // wx.navigateBack()
    // wx.navigateBack()
    // wx.navigateBack()
    // wx.navigateBack()

    wx.navigateBack({
      delta: this.data.id ? 2 : 4,
    })
  },
})

/* 
  我们原来用标签 navigator 去跳转
    <navigator url="/...." open-type="navigate">        追加记录     相当于 wx.navigateTo({ url: '/.....' })
    <navigator url="/...." open-type="redirect">        覆盖记录     相当于 wx.redirectTo({ url: '/.....' })
    <navigator url="/...." open-type="switchTab">       跳转tab页    相当于 wx.switchTab({ url: '/.....' })
    <navigator url="/...." open-type="reLaunch">        重置页面栈    相当于 wx.reLaunch({ url: '/.....' })
    <navigator url="/...." open-type="navigateBack">    返回上一页    相当于 wx.navigateBack()
*/
